﻿define(function(require,exports,module) {
	// require('./shop');
	var myPub = require('./public');

	var getDateUrl = '/shop/goodsComment/commentList';

    var oContain = $('.js_estimateBox');
    var oEstimateHead = $('.js_estimateHead');
    var oEstimateNav = $('.js_estimateNav');
    var oFooter = $('.footer');

    var oEstimateNavList = $('.js_estimateNavList');    // 导航
    var oCountNum = $('.js_count');


    oEstimateNav.on("touchmove",function(e) {e.preventDefault();});
    oFooter.on("touchmove",function(e) {e.preventDefault();});


    module.exports = {
        init:function(){
            estimate.estimateInit();
            estimate.SetPageNum();
            GetEstimateData.SetAjaxData(function () {
                GetData.loadOff[0] = false;
            });
            estimate.ScrollHide();
            /*
            $(window).unload(function() {
                // SetSession()
            });
            */
        }
    };

    $(window).resize(function() {
        estimate.estimateInit();
        estimate.SetLiHeight($('.js_estimateTabScroll'));
    });


    // 导航点击切换
    oEstimateNavList.find('li').on('click', function () {
        var oEstimateTabScroll = $('.js_estimateTabScroll');
        var index = $(this).index();
        oEstimateNavList.find('li').removeClass('active').eq(index).addClass('active');

        // 获取点击li的分类类型
        // var _TypeLabel = $(this).attr('typeLabel');
        // var _dataName = GetData.getArry(index);

        estimate.estimateInit();
        oEstimateTabScroll.hide().eq(index).show();

        if(GetData.loadOff[index]) {
            // console.log(GetData)
        	GetEstimateData.SetAjaxData();
            GetData.loadOff[index] = false;
        }

    });


    var GetData = {
        maxLimit: 50,               // 后台请求多少条评论数据
        getCoutNum: 0,              // 后台请求多少次
        getDataOff: true,           // 容许获取后台数据开关 false 说明后台数据已全部获取完了
        limit: 15,                    // 每次加载多少数据
        begin: [],                   // 开始
        end: [],                     // 结束数据
        pageNo: [],                 // 页码
        loadOff:[],                 // 加载数据的开关
        // allDate: [],                // 全部数据
        // goodDate: [],               // 好评数据
        // generalDate: [],            // 中评数据
        // badDate: [],                // 差评数据
        scrollTop: [],              // 历史滚动数据
        // 根据所以获取对应的数据
        getArry: function (index) {
            switch (index) {
                case 0:
                    return GetData.allDate
                    break;
                case 1:
                    return GetData.goodDate
                    break;
                case 2:
                    return GetData.generalDate
                    break;
                case 3:
                    return GetData.badDate
                    break;
            }
        },

        SetSession: function () {
            sessionStorage.setItem("est-scroll", GetData.scrollTop);
            sessionStorage.setItem("est-pageNo", GetData.pageNo);
            sessionStorage.setItem("est-loadOff", GetData.loadOff);
        }
    };

    var estimate = {
        // 页面位置调整
        estimateInit: function () {
            oEstimateNav.css({'top': 0});
            oContain.css({
                'top': oEstimateNav.outerHeight(true)+5,
                'bottom' : oFooter.outerHeight(true)
            });
        },

        // 设置li的宽度和高度
        SetLiHeight: function (obj) {
            // var oEstimateList = $('.js_estimateList');
            var oEstimateList = obj;

            var oEstimateListLiW = oEstimateList.find('.js_showImg').width()*0.312;

            oEstimateList.find('li').css({
                'height': oEstimateListLiW,
                'width' : oEstimateListLiW
            });

            // 循环图片 设置偏移值
            oEstimateList.find('li img').attr('style','');
            oEstimateList.find('li img').each(function (i) {

                if(oEstimateList.find('li img').eq(i).height() < oEstimateListLiW) {
                    oEstimateList.find('li img').eq(i).stop().animate({
                        'width': 'auto',
                        'height' : oEstimateListLiW,
                        'opacity' : 1

                    },300,function () {
                        oEstimateList.find('li img').eq(i).css({
                            'margin-left' : (oEstimateListLiW - oEstimateList.find('li img').eq(i).width())/2
                        });
                    });
                }
                else {
                    oEstimateList.find('li img').eq(i).stop().animate({
                        'margin-top' : (oEstimateListLiW - oEstimateList.find('li img').eq(i).height())/2,
                        'opacity' : 1
                    },300);

                    // console.log('width:'+i)
                }
            });

        },

        // 滚动隐藏搜索
        ScrollHide: function () {
            var oEstimateTabScroll = $('.js_estimateTabScroll');
            var beforScroll = [];
            var scrollTime;
            var minScrHeight = 200;

            var oEstimateNavHeight = oEstimateNav.outerHeight(true);
            var oEstimateHeadHeight =  oEstimateHead.outerHeight(true);
            var oEstimateTabScrollHeight = oEstimateTabScroll.height();


            oEstimateTabScroll.each(function (i) {
                beforScroll[i] = oEstimateTabScroll.eq(i).scrollTop()
            });



            oEstimateTabScroll.on('scroll', function () {
                var index = $(this).index();
                var afterScroll = $(this).scrollTop();
                var res = afterScroll - beforScroll[index];
                // var _TypeLabel = oEstimateNavList.find('li').eq(index).attr('typelabel');
                // var _dataName = GetData.getArry(index);

            	/*
                // 设置页面滚动高度并记录
               // GetData.scrollTop[index] = afterScroll;
                if(afterScroll >= oEstimateHeadHeight) {
                    oContain.css({ 'top': oEstimateHeadHeight });
                    oEstimateTabScroll.css({ 'padding-top': oEstimateHeadHeight });

                    if(res>0){
                        //console.log('xia'+afterScroll);
                        oEstimateNav.css({'top': -oEstimateHeadHeight});
                    }else{
                        //console.log('shang'+afterScroll);
                        // oEstimateNav.css({'top': 0});
                    }
                    beforScroll[index] = afterScroll;

                }
                else {
                    oContain.css({'top': oEstimateNavHeight + 5});
                    oEstimateTabScroll.css({ 'padding-top': 0 });
                    oEstimateNav.css({'top': 0});
                }

        	 	*/

                // 滚动页面底部200像素 延迟150毫秒加载数据
                clearTimeout(scrollTime);
                scrollTime = setTimeout(function() {
                    if(oEstimateTabScroll[index].scrollHeight - afterScroll - oEstimateTabScrollHeight  < minScrHeight) {
                        GetEstimateData.SetAjaxData();
                    }
                },150);


            });

        },

        // 设置页面个数
        SetPageNum: function () {
            for (var i=0; i<oEstimateNavList.find('li').length; i++) {
                oContain.prepend('<div class="estimateMain estimateTab js_estimateTabScroll" style="display: none;">' +
                                    '<div class="js_listBox"></div> ' +
                                    '<div class="moreBtnBox js_moreBtnBox border_top">'+
                                        '<p class="moreBtn js_noMore" style="display: none;"><span>没有更多</span></p>'+
                                        '<p class="loadingBtn js_loading" >'+
                                        '<span class="icon_loading icoStyle icon-spinner3 myRotateRefresh"></span><span>加载中</span>'+
                                        '</p>'+
                                    '</div>'+
                                '</div>');
                GetData.begin.push(0);
                GetData.end.push(0);
                GetData.pageNo.push(0);
                GetData.scrollTop.push(0);
                GetData.loadOff.push(true)
            }


        }


    }


    // 获取数据
    var GetEstimateData = {
        // 设置数据
        SetAjaxData: function (fn) {
            var _this = this;
            var oEstimateTabScroll = $('.js_estimateTabScroll');
            var index = oEstimateNavList.find('li.active').index();
            var sType = oEstimateNavList.find('li.active').attr('typelabel');
            var pageCount = parseInt(oCountNum.eq(index).text() / GetData.limit + 1);

            var _pageNo = GetData.pageNo[index];
            var _begin = GetData.begin[index];
            var _end = GetData.end[index];

            // 对应评论数为0 return
            if(oCountNum.eq(index).text()*1 == 0) {
                oEstimateTabScroll.eq(index).find('.js_moreBtnBox p').hide().eq(0).show();
                return
            }

            // 页码数大于页码总数 返回
            if(_pageNo >= pageCount) {
                oEstimateTabScroll.eq(index).find('.js_moreBtnBox p').hide().eq(0).show();
                return;
            }


            G_JSON_GET(getDateUrl,{
                 "goodsId": goodsId,
                 "type": index+1,
                 "start": _begin,
                 "limit": GetData.limit
            },function (data) {
                // console.log(data.ratings.length);
                var dataJson = data.ratings

                if( data.status == "sucess") {
                    /*全部数据
                   GetData.allDate = dataJson;

                   // 数据分类
                   for (var i=0; i<dataJson.length; i++) {

                       // 好评
                       if(dataJson[i].star == 5 || dataJson[i].star == 4) {
                           // console.log(dataJson[i])
                           GetData.goodDate.push(dataJson[i])
                       }
                       // 中评
                       else if (dataJson[i].star == 3) {
                           // console.log(dataJson[i])
                           GetData.generalDate.push(dataJson[i])
                       }
                       // 差评
                       else {
                           // console.log(dataJson[i])
                           GetData.badDate.push(dataJson[i])
                       }
                   }*/
                	if(dataJson.length<GetData.limit){
                        oEstimateTabScroll.eq(index).find('.js_moreBtnBox p').hide().eq(0).show();
                	}

                    GetData.begin[index] += GetData.limit;
                    _this.ConnectHtml(dataJson, index, sType);
                    GetData.pageNo[index]++;
                    if(fn)fn()
                }

            }, function () {
                // start
            }, function () {

            });

        },

        // 拼接HTML
        ConnectHtml: function (dataJson, index, sType) {
            var _this = this;
            var oEstimateTabScroll = $('.js_estimateTabScroll');
            var shtml='';
            var aUpdatePic = [];
            var _pageNo = GetData.pageNo[index];

            for (var i=0; i<dataJson.length; i++) {
                // 设置评价图片
                if(dataJson[i].imagePath != '' && dataJson[i].imagePath.split(',').length > 0) {
                    for (var n = 0; n<dataJson[i].imagePath.split(',').length; n++) {
                        if(aUpdatePic[i] == undefined) aUpdatePic[i] = '';
                        aUpdatePic[i] += '<li><img data-preview-src  data-preview-group="'+ sType +'-'+ _pageNo +'-'+ i +'" src="'+ httpImageUrl + dataJson[i].imagePath.split(',')[n] +'"  alt=""></li>'
                    }
                }
                else {
                    aUpdatePic[i] = ''
                }

                var imgUrl = dataJson[i].headPortraitPath;
                if(dataJson[i].headPortraitPath == '')
                	imgUrl = defualtImg;

                if(shtml == undefined) shtml = '';
                shtml += '<div class="estimateList js_estimateList js_'+ sType +'-'+ _pageNo +'">'+
                            '<div class="estimateUser HBox BoxCenter">'+
                                '<div class="userInfo Bflex1">' +
                                    '<figure><img src="'+ imgUrl +'" alt=""></figure>' +
                                    '<div class="userName">' +
                                        '<div class="name"><span>'+ dataJson[i].nickNameResult +'</span></div>' +
                                        '<div class="user_star actStar'+ dataJson[i].star +'">' +
                                            '<span class="icon_star_small"><span class="real-star"></span></span>' +
                                        '</div>' +
                                    '</div>' +
                                '</div>' +
                                '<aside class="estimateTime ">'+ _this.setDate(dataJson[i].createDate.time) +'</aside>' +
                            '</div>'+
                            '<div class="estimateInfo">' +
                                '<p>'+ dataJson[i].comment +'</p>' +
                                '<div class="showImg js_showImg">' +
                                    '<ul class="clearfix">' + aUpdatePic[i] + '</ul>' +
                                '</div>' +
                            '</div>' +
                        '</div>' ;

            }

            oEstimateTabScroll.eq(index).show().find('.js_listBox').append(shtml);
            //js_estimateTabScroll

            var oListBox = oEstimateTabScroll.eq(index).find('.js_listBox');
            var oListImg = oEstimateTabScroll.eq(index).find('.js_'+ sType +'-'+ _pageNo +'');

            estimate.SetLiHeight(oListImg);

            // 数据高度小于页面高度
            if(oListBox.height() < oEstimateTabScroll.height()) {
                GetEstimateData.SetAjaxData();
            }

        },

        // 设置日期
        setDate: function (str) {
            var dateTime = 'Date('+ str +')/'.replace(/\//g, '');
            dateTime = eval('new ' + dateTime);
            return myPub.FormatDateTime(dateTime,'minDay')
        }
    }

});


